// DialerActivity.kt
package com.sanji.audio_test

import android.app.Activity
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.widget.Toast
import androidx.core.content.ContextCompat

/**
 * 拨号功能工具类
 * 提供调用系统拨号界面的功能，包括权限检查和自动处理权限请求
 */
class Dialer {
    companion object {
        /**
         * 检查是否具有拨号权限
         *
         * @param context 上下文对象，用于检查权限
         * @return Boolean 如果具有拨号权限返回true，否则返回false
         */
        fun hasCallPhonePermission(context: Context): Boolean {
            return ContextCompat.checkSelfPermission(
                context, 
                android.Manifest.permission.CALL_PHONE
            ) == PackageManager.PERMISSION_GRANTED
        }
        
        /**
         * 调用系统拨号功能
         * 如果具有权限则直接拨号，如果没有权限则不执行任何操作
         *
         * @param activity Activity上下文对象，用于启动拨号界面和请求权限
         * @param phoneNumber 需要拨打的电话号码
         */
        fun makePhoneCall(activity: Activity, phoneNumber: String) {
            try {
                // 检查是否有权限
                if (!hasCallPhonePermission(activity)) {
                    // 没有权限时不执行任何操作，由Flutter插件处理权限请求
                    Toast.makeText(activity, "缺少拨号权限", Toast.LENGTH_SHORT).show()
                    return
                }
                
                // 具有权限，执行拨号操作
                performCall(activity, phoneNumber)
            } catch (e: Exception) {
                // 捕获异常并显示错误提示
                Toast.makeText(activity, "拨号失败: ${e.message}", Toast.LENGTH_SHORT).show()
            }
        }
        
        /**
         * 执行实际的拨号操作
         * 创建拨号意图并启动系统拨号应用
         *
         * @param activity Activity上下文对象，用于启动拨号界面
         * @param phoneNumber 需要拨打的电话号码
         */
        private fun performCall(activity: Activity, phoneNumber: String) {
            // 创建拨号意图
            val intent = Intent(Intent.ACTION_CALL).apply {
                data = Uri.parse("tel:$phoneNumber")
            }

            // 检查是否有可以处理此意图的应用
            if (intent.resolveActivity(activity.packageManager) != null) {
                // 启动拨号界面
                activity.startActivity(intent)
            } else {
                // 如果没有找到可以处理的应用，显示提示
                Toast.makeText(activity, "无法找到拨号应用", Toast.LENGTH_SHORT).show()
            }
        }
    }
}